package collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

/**
 * 集合之间的操作: 并集, 交集, 差集
 */
public class CollectionDemo3 {
    public static void main(String[] args) {
        Collection c1 = new ArrayList();
        c1.add("java");
        c1.add("c++");
        c1.add(".net");
        System.out.println("c1:"+c1);//c1:[java, c++, .net]

        Collection c2 = new HashSet();
        c2.add("ios");
        c2.add("android");
        System.out.println("c2:"+c2);//c2:[android, ios]
        /*
            boolean addAll(Collection c)
            将给定集合c中所有元素添加到当前集合中, 取并集操作
            操作完毕后, 当前集合发生了改变就返回true
         */
        //将c2的所有元素添加到c1中
        c1.addAll(c2);
        System.out.println(c1);//[java, c++, .net, android, ios]
        //System.out.println(c1.addAll(c2));//true
        //将c1的所有元素添加到c2中
        c2.addAll(c1);
        System.out.println(c2);//[c++, java, android, .net, ios] c2是HashSet集合, 不能放入重复元素

        Collection c3 = new ArrayList();
        c3.add("java");
        c3.add("android");
        c3.add("php");
        System.out.println("c3:"+c3);//c3:[java, android, php]
        /*
            boolean containsAll(Collection c)
            判断当前集合是否包含给定集合中的所有元素
         */
        boolean containsAll = c1.containsAll(c3);
        System.out.println("全包含:"+containsAll);//全包含:false
        /*
            boolean retainAll(Collection c)
            取交集, 保留当前集合中与给定集合共有的元素
         */
        c1.retainAll(c3);
        System.out.println("c1:"+c1);//c1:[java, android]
        System.out.println("c3:"+c3);//c3:[java, android, php]
        /*
            boolean removeAll(Collection c)
            删交集, 删除当前集合中与给定集合共有的元素
         */
        c1.removeAll(c3);
        System.out.println("c1:"+c1);//c1:[c++, .net, ios]
    }
}
